home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / tcqbsnip.zip / CALENDAR.BAS < prev    next >
BASIC Source File  |  1997-06-20  |  3KB  |  92 lines

  1. ' CALENDAR.BAS
  2. ' by Tika Carr & others (I think Dave Shea was it?) in QUIK_BAS Echo
  3. ' (date unknown)
  4. '
  5. ' Donated to the public domain
  6. ' No warranties or guarantees are expressed or implied.
  7. '
  8. ' Purpose: Prints out a calendar to the printer, screen or a file.
  9.  
  10. 'Mode$ is "SCRN:" for screen, "LPTx:" for Printer and "FIL:" for file
  11. 'If file, provide filename to save to. Ex: FILCALENDAR.TXT saves it
  12. 'to CALENDAR.TXT in current directory. x for LPTx: is port your printer is
  13. 'on. Usually its "LPT1:"
  14.  
  15.  
  16.  
  17. DECLARE SUB Calendar (Month%, Year%, Mode$, form%)
  18. DEFINT A-Z
  19.  
  20. DATA January, 31, February, 28, March, 31
  21. DATA April, 30, May, 31, June, 30, July, 31, August, 31
  22. DATA September, 30, October, 31, November, 30, December, 31
  23. TYPE MonthType
  24.    Number AS INTEGER
  25.    MName AS STRING * 9
  26. END TYPE
  27.  
  28.  
  29. Calendar 12, 1996, "12_96.txt", 0: RESTORE
  30. Calendar 1, 1998, "1_98.txt", 0
  31. FOR Count = 1 TO 12
  32.   RESTORE
  33.   IF Count < 10 THEN X$ = "0" ELSE X$ = ""
  34.   F$ = "FIL:" + X$ + LTRIM$(STR$(Count)) + "_97.txt"
  35.   Calendar Count, 1997, F$, 0
  36. NEXT
  37. END
  38.  
  39. SUB Calendar (Month, Year, Mode$, form)
  40.  
  41. IF form = 0 THEN
  42.   Frm$ = " S  M  T  W  T  F  S": U$ = "## "
  43. ELSE
  44.   Frm$ = "Su    M   Tu    W   Th    F   Sa" + CHR$(13): U$ = "##   "
  45. END IF
  46. DIM MonthData(1 TO 12) AS MonthType
  47. FOR I = 1 TO 12
  48.    READ MonthData(I).MName, MonthData(I).Number
  49. NEXT
  50. NumDays = 0
  51. FOR I = 1899 TO Year - 1
  52.     IF (I MOD 4 = 0 AND I MOD 100 <> 0) OR (I MOD 400 = 0) THEN
  53.         NumDays = NumDays + 366 MOD 7
  54.     ELSE NumDays = NumDays + 365 MOD 7
  55.     END IF
  56. NEXT
  57. FOR I = 1 TO Month - 1: NumDays = NumDays + MonthData(I).Number: NEXT
  58. TotalDays = MonthData(Month).Number
  59. Mode$ = UCASE$(Mode$): IF Mode$ = "" THEN Mode$ = "SCRN:"
  60. IF LEFT$(Mode$, 3) = "LPT" THEN LPort = VAL(MID$(Mode$, 4, 1))
  61. IF (Year MOD 4 = 0 AND Year MOD 100 <> 0) OR (Year MOD 400 = 0) THEN
  62.     IF Month > 2 THEN
  63.         NumDays = NumDays + 1
  64.     ELSEIF Month = 2 THEN TotalDays = TotalDays + 1
  65.     END IF
  66. END IF
  67. StartDay = NumDays MOD 7
  68. IF Mode$ = "SCRN:" THEN CLS
  69. Header$ = RTRIM$(MonthData(Month).MName) + "," + STR$(Year)
  70. IF form = 0 THEN TLen = 23 ELSE TLen = 35
  71. LeftMargin = (TLen - LEN(Header$)) \ 2
  72. IF LEFT$(Mode$, 4) = "FIL:" THEN
  73.     FileName$ = RIGHT$(Mode$, LEN(Mode$) - 4)
  74.     Mode$ = "FIL:"
  75. ELSE FileName$ = Mode$
  76. END IF
  77. OPEN FileName$ FOR OUTPUT AS #1
  78. PRINT #1, TAB(LeftMargin); Header$: PRINT #1, ""
  79. PRINT #1, Frm$
  80. LeftMargin = 5 * StartDay + 1: P = LeftMargin
  81. IF form = 0 THEN LeftMargin = StartDay * 3 + 1
  82. PRINT #1, TAB(LeftMargin);
  83. FOR I = 1 TO TotalDays
  84.     PRINT #1, USING U$; I;
  85.     P = P + 5
  86.     IF P > 32 THEN PRINT #1, "": P = 0
  87. NEXT
  88. PRINT #1, "": CLOSE #1
  89.  
  90. END SUB
  91.  
  92.